home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / internet / irc_i_dodatki / eggdrop / eggdrop11.lha / scripts / ntalk.irc < prev    next >
Text File  |  1997-01-15  |  7KB  |  227 lines

  1. ### Change this to 0 if you don't want 0.9 support -- you are probably
  2. ### better off w/o it anyway because the new versions should work on the
  3. ### 0.9 bots, too...  And the autoget works even if the bot isn't using
  4. ### its own name -- but just in case, leave this to one if you aren't sure
  5.  
  6. @talk.oldok= 1
  7.  
  8. if (0) {
  9. #
  10. # Use to talk to an eggdrop bot in dcc chat
  11. #
  12. # Originally by Robey
  13. # Re-written by Fred1
  14. #
  15. # 06-27-96 cmwagner  Fixed prompt when changing directory in files area on
  16. #                    1.0 bots, changes prompt now.  Fixed removal of files
  17. #                    area prompt when returning from the files area (so that
  18. #                    it is not used in the party line, too)
  19. #
  20. #  Fred1's mods:
  21. #    nTalk v3:
  22. #     Fixed the bug that kept the nickname from showing up for master-only
  23. #      chats.  Before, me doing ",howdy" came out "howdy" vs. "-Fred1- howdy"
  24. #     Nicks are now encoded so that the script works correctly for all valid
  25. #      nicks instead of choking on ones with special chars
  26. #     Fixed the bug where it would always close your current window instead
  27. #      of the proper talk session
  28. #     Greatly simplified robey's parenthesis-happy stuff where I could *grin*
  29. #    nTalk v4:
  30. #     Modified for Eggdrop 1.0 compatibility.  The support for v0.9-specific
  31. #      nTalk is optional and can be disabled by changing the @talk.oldok= 1
  32. #      statement at the beginning of this file to: @talk.oldok= 0
  33. #
  34. #  Warnings, disclaimers, and other comments:
  35. #    While I have not included backdoors deliberately and I have endeavored
  36. #     to prevent them wherever possible, there are no guarantees.  Use this
  37. #     script at your own risk!
  38. #    This script uses an alias "*" which I recommend that you use whenever
  39. #     you want to echo at level crap -- if for no other reason because it
  40. #     is faster and it attempts to correct any termcap highlighting errors
  41. #     [such as INVERSE being left on and screwing up your screen].
  42. #     That shouldn't clash w/ other scripts, but as with any other alias,
  43. #     I guess it's possible...
  44. #    In general, the use of bot responses to key the events is not really
  45. #     a very clean way to do this because the script will not work if
  46. #     some warez puppy has modified the bot to say "Fred1, yo mamma!
  47. #     Slapping ya summa dat file.txt, beeyotch!" instead of the normal
  48. #     "Sending: file.txt to Fred1" and the same goes for the other keys,
  49. #     such as "Connected", the bot version string, "Now in:", "Current
  50. #     directory:", "Returning you to", etc.  But as long as people leave
  51. #     those things alone it won't be a problem -- changing them is pretty
  52. #     lame anyway.
  53. #    This will destroy any "/me" alias you have.
  54. #
  55. }
  56.  
  57. ### The * alias for echoing crap
  58.  
  59. alias * xecho -level crap *** $0-
  60.  
  61. ### The actual command
  62.  
  63. alias ntalk {
  64. if (![$0]) {
  65.     *  Usage: /TALK <bot>
  66.     *    Features:
  67.     *      Establish or close a chat session with an Eggdrop bot.
  68.     *      Uses a dedicated IrcII window
  69.     *      Control-\ will switch between windows
  70.     *      Translates /me into .me
  71. }{
  72.     @ talk.z= encode($toupper($0))
  73.     @ talk.q= talk.session[$talk.z]
  74.     if (talk.q) {
  75.         //^dcc close chat $0
  76.         talk.done $0 $talk.z $talk.q
  77.     }{
  78.         @ talk.q= 1
  79.         while (talk.cross[$talk.q]) {@ talk.q= talk.q+1}
  80.         @ talk.cross[$talk.q]= talk.z
  81.         @ talk.session[$talk.z]= talk.q
  82.         @ talk.echo[$talk.q]= [INIT]
  83.         ^assign -talk.prompt[$talk.q]
  84.         ^window new scroll on shrink 5 name Talk$talk.q level none
  85.         ^set hold_mode off
  86.         ^query =$0
  87.         ^on ^window "% \*\*\* DCC CHAT % % $0 lost*" talk.lost $$6
  88.         ^on ^dcc_chat "$0 *" talk.recv.off $$0-
  89.         ^on ^send_dcc_chat "$0 *" talk.send $$0-
  90.         xecho -window Talk$talk.q Use /TALK $0 again to end.
  91.         ^dcc chat $0 talk
  92.     }
  93. }}
  94.  
  95. ### Various handlers
  96.  
  97. # Called whenever you receive something from the bot before negotiation.
  98.  
  99. alias talk.recv.off {
  100.     @ talk.z= encode($toupper($0))
  101.     @ talk.q= talk.session[$talk.z]
  102.     if ([$1] == [///]) {
  103.         if ([$2]==[OK]) {
  104.             ^on ^dcc_chat "$0 *" talk.recv.old $$0-
  105.             xecho -window Talk$talk.q Using OLD Talk protocol.
  106.         }
  107.     }{
  108.         if ([$1] == [Connected]) {
  109.             if ((talk.oldok) && match(*v0.* $4$5$6$7$8$9)) {
  110.                 msg =$0 /// talk
  111.             }{
  112.                 ^on ^dcc_chat "$0 *" talk.recv.new $$0-
  113.                 xecho -window Talk$talk.q Using NEW Talk protocol.
  114.             }
  115.         }
  116.         xecho -window Talk$talk.q $1-
  117.     }
  118. }
  119.  
  120. # Called whenever you receive after negotiating old Talk protocol
  121. # This is never used unless you set talk.oldok to 1 and nTalk with
  122. # one of the old v0.9 bots.
  123.  
  124. alias talk.recv.old {
  125.     @ talk.z= encode($toupper($0))
  126.     @ talk.q= talk.session[$talk.z]
  127.     if ([$1] == [///]) {
  128.         if ([$2] == [ECHO]) {@ talk.echo[$talk.q]= [$3]}
  129.         if ([$2] == [PROMPT]) {@ talk.prompt[$talk.q]= [$3]}
  130.         if ([$2] == [GET]) {
  131.             ^on -ctcp "% % DCC SEND $3 *" {
  132.                 //^dcc get $0 $4
  133.                 ^on ctcp -"% % DCC SEND $4 *"
  134.                 * nTalk is autogetting $4 from $0
  135.             }
  136.             timer 120 talk.time ^on -ctcp -"% % DCC SEND $3 *"
  137.         }
  138.     }{
  139.         xecho -window Talk$talk.q $1-
  140.     }
  141. }
  142.  
  143. # Called whenever you receive after negotiating new Talk protocol
  144.  
  145. alias talk.recv.new {
  146.     @ talk.z= encode($toupper($0))
  147.     @ talk.q= talk.session[$talk.z]
  148.     if ([$1-2]==[Current directory:] || [$1-2]==[Now in:]) {
  149.         @ talk.echo[$talk.q]= [ON]
  150.         @ talk.prompt[$talk.q]= [$3]
  151.     }
  152.     if ([$1-3]==[New current directory:]) {
  153.         @ talk.echo[$talk.q]= [ON]
  154.         @ talk.prompt[$talk.q]= [$4]
  155.     }
  156.     if ([$1-2]==[Returning you]) {
  157.         @ talk.echo[$talk.q]= [OFF]
  158.         @ talk.prompt[$talk.q]= []
  159.     }
  160.     if ([$1 $3]==[Sending: to]) {
  161.         if ([$4]==N) {
  162.             ^on -ctcp "% % DCC SEND $2 *" {
  163.                 //^dcc get $0 $4
  164.                 ^on ctcp -"% % DCC SEND $4 *"
  165.                 * nTalk is autogetting $4 from $0
  166.             }
  167.             timer 120 ^on -ctcp -"% % DCC SEND $2 *"
  168.         }{
  169.             * Warning: $0 is sending $2 to the wrong nick \($4\)!
  170.             * Use "cancel $2" to abort and use "get $2 $N" instead.
  171.         }
  172.     }
  173.     if ([$1]!=[///]) {;xecho -window Talk$talk.q $1-}
  174. }
  175.  
  176.  
  177. # Called whenever you send something to the bot.
  178.  
  179. alias talk.send {
  180.     @ talk.z= encode($toupper($0))
  181.     @ talk.q= talk.session[$talk.z]
  182.     if (([$(talk.echo[$talk.q])]==[ON])||(([$[1]1]==[.])&&([$1]!=[.me]))) {
  183.         xecho -window Talk$talk.q $(talk.prompt[$talk.q])\> $1-
  184.     }
  185. }
  186.  
  187. # Tries to catch it when the bot hangs up on you
  188.  
  189. alias talk.lost {
  190.     @ talk.z= encode($toupper($0))
  191.     @ talk.q= talk.session[$talk.z]
  192.         talk.done $0 $talk.z $talk.q
  193. }
  194.  
  195. # Clean up whenever a connection closes
  196.  
  197. alias talk.done {
  198.     ^assign -talk.q
  199.     ^assign -talk.z
  200.     ^window refnum Talk$2 kill
  201.     ^on window -"% \*\*\* DCC CHAT % % $0 lost"
  202.     ^on dcc_lost -"$0 *"
  203.     ^on dcc_chat -"$0 *"
  204.     ^on send_dcc_chat -"$0 *"
  205.     ^assign -talk.session[$1]
  206.     ^assign -talk.cross[$2]
  207.     ^assign -talk.prompt[$2]
  208.     ^assign -talk.echo[$2]
  209.     ^assign -talk.vers[$2]
  210.     * TALK to $0 ended.
  211. }
  212.  
  213. ### For those of us with old habits :)
  214.  
  215. # Hitting Control-\ will change windows
  216. bind ^\ next_window
  217.  
  218. # Type /talk instead of /ntalk
  219. alias talk ntalk
  220.  
  221. # So /me will work correctly in the nTalk window.
  222. alias me if ([$[1]T]!=[=]) {//me $0-} {//msg $T .me $0-}
  223.  
  224. ### All done!
  225.  
  226. * nTalk v4.2 loaded...
  227.